package czt.jiami;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils;

/**
 * @author czt
 * @version 1.0
 * @since 2025/3/12
 */
@Slf4j
public class MD5Test {
    /**
     * MD5加密
     * 原理
     * 数据填充：对原始数据进行填充，让数据长度对 512 取模后余数为 448。
     * 添加长度：在填充后的数据后面加上 64 位，用来表示原始数据的长度。
     * 分组处理：把数据按 512 位分组，每组进行四轮共 64 步的运算，通过非线性函数、移位和加法等操作对 4 个 32 位寄存器 A、B、C、D 进行更新。
     * 输出结果：所有分组处理完后，将 A、B、C、D 连接起来得到 128 位的 MD5 哈希值，一般用 32 位十六进制字符串表示。
     */
    public static void main(String[] args) {
        String str = "cztJava";

        // 使用md5生成摘要
        String hex = DigestUtils.md5Hex(str);

        log.info("md5生成的摘要:{}", hex);
    }
}
